/******************************************************
Cours: LOG121
Session: A2012
Groupe: 01
Projet: Laboratoire #1
Étudiant(e)s: Guillaume Boulay
              Pierre-Olivier Dubé
              Sébastien Gergel
Professeur et chargé de labo : Patrice Boucher
Nom du fichier: RequestManager.java
Date crée: 2012-10-16
Date dern. modif. 2012-10-29
*******************************************************
Historique des modifications
*******************************************************
2012-10-16 Version initiale (Guillaume Boulay)
2012-10-29 Ajout d'une fonction retournant n Forme (Guillaume Boulay)
*******************************************************/
package server;

import java.io.IOException;
import java.net.UnknownHostException;

/**
 * La classe propose des fonctions gérant la connection au serveur d'une manière
 * spécifique, tout dépendants des fonctions utilisées.
 * 
 * @author Guillaume Boulay
 */
public class RequestManager
{
    /**
     * Retourne une String de forme.
     * 
     * Pour se connecter au serveur, cette fonction utilise ServerConnection
     * et termine directement la connection avec le serveur lorsqu'une chaine
     * de caractère est retourné.
     * 
     * @return une String contenant les détails de la forme. Jamais null.
     * 
     * @throws UnknownHostException si le serveur est non trouvable.
     * @throws IOException si il y a une quelconque erreur lors de la 
     * récupération de la String.
     */
    public static String getForm() throws UnknownHostException, IOException
    {
        ServerConnection c = ServerConnection.getInstance();
        String form = null;

        c.connect();
        form = c.getLine();
        c.close();

        return form;
    }
    
    /**
     * Retourne un tableau de n String.
     * 
     * Pour se connecter au serveur, cette fonction utilise ServerConnection
     * et termine directement la connection avec le serveur lorsqu'une chaine
     * de caractère est retourné.
     * 
     * @param n le nombre de String à retourné.
     * @return une String contenant les détails de la forme. Jamais null.
     * 
     * @throws UnknownHostException si le serveur est non trouvable.
     * @throws IOException si il y a une quelconque erreur lors de la 
     * récupération de la String.
     */
    public static String[] getForms(int n) throws UnknownHostException, IOException
    {
        ServerConnection c = ServerConnection.getInstance();
        String[] forms = new String[n];

        c.connect();
        for (int i = 0; i < n; i++) {
            forms[i] = c.getLine();
        }
        c.close();

        return forms;
    }
    
    /**
     * Modifie les paramètres de connexions du serveur.
     * 
     * @param address l'addresse du serveur sous forme `ip:port`
     * @throws UnknownHostException 
     */
    public static void setServerParameter(String address) 
            throws Exception
    {
        ServerConnection.setAddress(address.substring(0, address.indexOf(":")));
        ServerConnection.setPort(Integer.parseInt(
                address.substring(address.indexOf(":") + 1)));
    }
}
